/*
 * @Author: wwssaabb
 * @Date: 2021-12-09 17:47:47
 * @LastEditTime: 2021-12-09 17:52:24
 * @FilePath: \handwritten-code\algorithm\反转字符串.js
 */

/* 
编写一个函数， 其作用是将输入的字符串反转过来。 输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间， 你必须原地修改输入数组、 使用 O(1) 的额外空间解决这一问题。

示例 1：
输入： s = ["h", "e", "l", "l", "o"]
输出：["o", "l", "l", "e", "h"]

示例 2：
输入： s = ["H", "a", "n", "n", "a", "h"]
输出：["h", "a", "n", "n", "a", "H"]

来源： 力扣（ LeetCode）
链接： https: //leetcode-cn.com/problems/reverse-string
*/

//双指针遍历
var reverseString = function (s) {
  let l = 0,
    r = s.length - 1
  while (l < r) {
    s[l] = s[l].charCodeAt()
    s[r] = s[r].charCodeAt()
    s[l] ^= s[r]
    s[r] ^= s[l]
    s[l] ^= s[r]
    s[l] = String.fromCharCode(s[l])
    s[r] = String.fromCharCode(s[r])
    l++
    r--
  }
};

var reverseString = function (s) {
  let l = 0,
    r = s.length - 1,
    temp
  while (l < r) {
    temp = s[l]
    s[l] = s[r]
    s[r] = temp
    l++
    r--
  }
};